package com.daos;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import com.misBeans.Trabajador;

public class TrabajadorDAOImplementacion implements TrabajadorDAO {

	private JdbcTemplate plantilla;

	public void setDataSource(DataSource dataSource) {
		// se instancia plantilla con la inyeccion del datasource
		this.plantilla = new JdbcTemplate(dataSource);
	}

	@Override
	public boolean ingresarEmpleado(Trabajador t) {
		// TODO Auto-generated method stub
		// ingresamos 1 trabajador con el metodo update de plantilla
		try {
			this.plantilla.update("INSERT INTO empresas(id, nombre, fecha_inicio, horas_trabajo, "
                                + " descripcion, direccion, pago_hora, min_hora, correo) "
                                + " VALUES(?,?,?,?,?,?,?,?,?)", t.getId(), t.getNombre(), t.getFechaInicio(), 
                                t.getHorasTrabajo(), t.getDescripcion(), t.getDireccion(), t.getPagoHora(), 
                                t.getMinimoHoras(),t.getCorreo());
                        return true;
		} catch (DataAccessException e) {
			return false;
		}
	}

	@Override
	public List<Trabajador> listarEmpleados() {
		// TODO Auto-generated method stub
		// realizamos la consulta de de trabajadores
		return this.plantilla.query("SELECT * FROM empresas",
		// se mapea el resultado de la consulta para que query
				// retorne una lista con objetos de tipo Trabajador
				new RowMapper<Trabajador>() {
					public Trabajador mapRow(ResultSet rs, int rowNum)
							throws SQLException {
						Trabajador t = new Trabajador();
						t.setId(rs.getString("id"));
						t.setNombre(rs.getString("nombre"));
						t.setFechaInicio(rs.getString("fecha_inicio"));
						t.setHorasTrabajo(rs.getString("horas_trabajo"));
                                                t.setDescripcion(rs.getString("descripcion"));
                                                t.setDireccion(rs.getString("direccion"));
                                                t.setPagoHora(rs.getString("pago_hora"));
                                                t.setMinimoHoras(rs.getString("min_hora"));
						t.setCorreo(rs.getString("correo"));
                                                
						return t;
					}
				});
	}

}
